package jers;

import java.rmi.RemoteException;

/**
 * Interface para um objeto {@link Manager}.
 * <p>
 * Esta objeto implementa o gerenciador dos servicos, 
 * obtendo uma instancia proxy remota para a implementacao real. 
 * Utilize o metodo {@link #getService()} para obter uma instancia 
 * do objeto {@link Service}.
 * <br>
 * Uma instancia do objeto {@link Manager} pode ser construida pela 
 * fabrica {@link Factory}. 
 * </p>
 * 
 * @see {@link Factory}, {@link Service}
 * 
 * @author 
 * 		<a href="mailto:felipe.zappala@gmail.com">
 * 			Luis Felipe Zappala
 * 		</a> [ <a href="http://lncc.br/ist">ISTCC-P</a> / 2009 ]
 */
public interface Manager {

	/**
	 * Obtem uma instancia proxy remoto para um obteto {@link Service}.
	 * 
	 * @param
	 * 		server - Endereco IP e porta do servidor de servicos. 
	 * 				 Formato esperado {@code <IP:PORT>}
	 * @return
	 * 		Uma implementacao proxy remoto para o objeto de servico.
	 * @throws 
	 * 		RemoteException caso ocorra algum erro remoto.
	 */
	public Service getService(String server) throws RemoteException;
	
}
